package com.great.codewars;

/**
 * 最大和子数组问题在于找到数组或整数列表中的连续子序列的最大和：
 * 
 * maxSequence([-2, 1, -3, 4, -1, 2, 1, -5, 4]) // should be 6: [4, -1, 2, 1]
 * 简单的情况是当列表仅由正数组成时，最大和是整个数组的总和。如果列表仅由负数组成，则返回0。
 * 
 * 空列表被认为具有零最大和。请注意，空列表或数组也是有效的子列表/子阵列。 最大子阵列和
 * 
 * @author think
 *
 */
public class MaxSize {
	public static int getMax(int[] arr) {
		boolean flag = true;
		if (arr.length == 0) {
			return 0;
		}
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] > 0) {
				flag = false;
				break;
			}
		}
		if (flag) {
			return 0;
		}
		int max = Integer.MIN_VALUE;
		int temp = 0;
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
			temp += arr[i];
			if (max < temp) {
				max = temp;
				System.out.println("  max小于temp:max=" + max);
			}
			if (temp < 0) {
				System.out.println(" temp<0;temp=" + temp + "设为0");
				temp = 0;
			}
		}
		System.out.println();
		return max;
	}

	public static void main(String[] args) {

		System.out.println(getMax(new int[] { -2, 1, -3, 4, -1, 2, 1, -5, 4 }));
		;
	}
}
